Although computers were once isolated and had minimal or little interaction with other computers, computers now interact with a wide variety of other computers through Local Area Networks (LANs), Wide Area Networks (WANs), dial-up connections, and the like. With the widespread growth of the INTERNET® computer network, connectivity between computers has become more important and has opened up many new applications and technologies. The growth of large-scale networks, and the wide-spread availability of low-cost personal computers, has fundamentally changed the way that many people work, interact, communicate, and play.
One increasing popular form of networking may generally be referred to as remote presentation, which can use protocols such as Remote Desktop Protocol (RDP), Independent Computing Architecture (ICA), and others to share a desktop and other applications with a remote client. Such computing systems typically transmit the keyboard presses and mouse clicks or selections from the client to a server, relaying the screen updates back in the other direction over a network connection (e.g., the INTERNET®). As such, the user has the experience as if their machine is executing the applications locally, when in reality the client device is only sent screenshots of the applications as they appear on the server side.
During a remote presentation session, the amount of image data to be sent to a client can be very large, which results in a combination of high use of processing resources to compress and encode the data, and high bandwidth requirements to transfer the data over a network. In particular, moving a window on the screen, or scrolling through a document, can result in a large amount of image data that needs to be compressed, encoded, and transferred. This leads to a poor remote presentation session experience, with large delays between a user's actions and the corresponding update on a display of the client. This may also result in overall degraded performance of the remote presentation session server, such as through CPU starvation.